home *** CD-ROM | disk | FTP | other *** search
-
- regc( 0, "TFACTOR" )
- regc4f( 3, %dirtcolor_r, %dirtcolor_g, %dirtcolor_b, 0.0 )
- regc4f( 4, %dirtsnow, %dirtgravel, %dirtmud, 0.0 )
- regc4f( 5, %daycolor_r, %daycolor_g, %daycolor_b, %daycolor_a )
- regc4f( 6, %ambient_r, %ambient_g, %ambient_b, %ambient_a )
-
- pshader("
-
- ps_1_4
-
- #include <cardef.h>
-
- #define DirtLevel c0.a
- #define DirtColor c3
- #define DirtType c4
- #define DayColor c5
-
- #define Diffuse v0.a
- #define SpotDiffuse v0
- #define Specular v1
- #define Fresnel v1.a
- #define Ambient c6
- #define ReflStrength c0.b
-
- def c7, 1, 0, SHADOWSMUL, SOFTSHADOWS
- def c2, 0.13, 0.33, 0.43, 1.0
- texld r1, t0 ;Dirt
- texld r2, t2 ;ColorMap
- texld r3, t3 ; Clouds
- texld r4, t4 ; Cubemap
-
- dp3_sat r1.rgb, DirtType, r1
-
- mul_sat r1, r1.b, DirtLevel ; dirtmask
-
- mad_x2_sat r2, r2.a, 1-r3.a, c7.a ; shadows + SOFTSHADOWS
-
- mul r4, r4, 1-r1
-
- phase
- texld r0, t0
- // r1 - dirtmask
- // r2 - shadows (przemnoza przez 2(SHADOWSMUL))
- // r3 - empty
- // r4 - Cubemap*dirtmask
- texld r5, t0 ; broken
-
- lrp r0.rgb, r1.b, DirtColor, r0
- +mul r1.a, r2.b, Diffuse
-
- add r0.rgb, r0, r5
- +mul r4.a, Fresnel, 1-r1.b ; cubemap mask (+ReflStrength wywalone)
-
- mul r4.rgb, r4, r4.a ; cubemap
- +mul_sat r3.a, 1-r1.b, r2.b ; final specular mask
-
- mad r3.rgb, r3.a, Specular, r4 ; specular+cubemap
- +mad_sat r1.a, r1.a, Ambient.b, Ambient.a ; final diffuse
-
- mad_sat r3.rgb, r0, r1.a, r3 ; color*diffuse+specular+cubemap
-
- dp3_sat r4.rgb, c2, r3 ; lum
- +lrp r0.a, r1.b, c7.r, r0.a
- #if VS_SPOTLIGHTS
- mul r1, r0, SpotDiffuse
- mad r0.rgb, r3, DayColor, r1
- +add_sat r0.a, r0.a , r4.b
- #else
- mul r0.rgb, r3, DayColor
- +add_sat r0.a, r0.a , r4.b
- #endif
- ")
-
-